/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Client;
import Server.MailServer;
import java.io.Serializable;
import java.util.LinkedList;

/**
 *
 * @author Lab-214-21
 */
public class MailClient implements Serializable{
    Usuario MiUsuario;
    MailServer Servidor;    
    ListaMensajes MensajesRecibidos;

     public MailClient(String NombreUsuario, String NombreServidor)
    {
    MiUsuario=new Usuario(NombreUsuario);
    Servidor=new MailServer(NombreServidor);
    MensajesRecibidos=new ListaMensajes();
    Servidor.AdicionarCliente(this);
    }
    
    public MailClient(MailServer s,String NombreUsuario )
    {
    MiUsuario=new Usuario(NombreUsuario);
    Servidor=s;
    MensajesRecibidos=new ListaMensajes();
    Servidor.AdicionarCliente(this);
    }

    
   


    
   
    
    public int CheckMessages()
    {
        return MensajesRecibidos.ObtenerDimension();
    }
    
    public String ReadNextMessage()
    {
       return ReadNextMessageAux(0);
    }
    public String ReadNextMessageAux(int i )
    {
            if (i>=MensajesRecibidos.ObtenerDimension())
                return "";
        Message aux=MensajesRecibidos.Obtener(i);
            if(!(aux.leido))
            {
                aux.leido=true;
                return aux.ToString();
                
            }
        return ReadNextMessageAux(i+1);
             
       
    }
    
    public void SendMessage(String Asunto, Usuario Destinatario, String Mensaje)
    {
        Message MiMensaje=new Message(MiUsuario,Destinatario,Asunto,Mensaje);
        MiMensaje.Atributos=new AtributosMensaje(Asunto, Mensaje);
        MiMensaje.setLeido(false);
        Servidor.Post(MiMensaje);
    }
    
    public int NroMensajesNoLeidos()
    {
        int n=0;
        for (int i=0;i<MensajesRecibidos.ObtenerDimension();i++)
        {
            Message aux=MensajesRecibidos.Obtener(i);
            if(!(aux.leido))
                n++;
        }
        return n;
    }
    public int NroMensajesNoLeidosAux()
    {
        int n=0;
        for (int i=0;i<MensajesRecibidos.ObtenerDimension();i++)
        {
            Message aux=MensajesRecibidos.Obtener(i);
            if(!(aux.leido))
                n++;
        }
        return n;
    }
    
    public void AdicionarNuevoMensaje(Message mensaje)
    {
        MensajesRecibidos.AdicionarAlInicio(mensaje);
    }
    public String ObtenerNombreMiUsuario()
    {
        return MiUsuario.Nombre;
    }
    
    public Usuario ObtenerUsuario()           
    {             
      return MiUsuario;
    }
    
    public ListaMensajes ObtenerMensajesRecibidos()
    {
        return MensajesRecibidos;
    }        
  
}

